package Sistema.professor.aluno;

import java.util.Scanner;


/**
 * Write a description of class Simulacao here.
 * 
 * @author (your name)
 * @version (a version number or a date)
 */
public class Simulacao {
	
	private Cadastro cadastro2 = new Cadastro(100);
	
	@SuppressWarnings("resource")
	public static void main(String args[]) {
		Simulacao s = new Simulacao();
		boolean aux = true;
		while(aux){
			Scanner sc;
			System.out.println("Menu");
			System.out.println("1 - Criar objetos");
			System.out.println("2 - Salvar objetos");
			System.out.println("3 - Recupear objetos");
			System.out.println("0 - Sair");
			sc = new Scanner(System.in);
			try{
				int temp = sc.nextInt();
				switch (temp) {
				case 1:
					s.criar();
					break;
				case 2:
					s.cadastro2.guardarEmArquivo();
					break;
				case 3:
					break;
				case 0:
					aux = false;
					break;
					
				default:
					System.out.println("Valor Invalido!");
					break;
				}
			}catch(Exception e){
				System.out.println("Valor não inteiro");
			}
		}
		
		
		
//		ObjectOutputStream obj;
//		FileOutputStream out;
//		try{
//			out = new FileOutputStream("Cadastro.txt");
//			obj = new ObjectOutputStream(out);
//			
//			obj.writeObject(cadastro1);
//			obj.writeObject(cadastro2);
//			
//			obj.close();
//			
//		}catch (FileNotFoundException ex) {
//			ex.printStackTrace();
//        } catch (IOException ex) {
//        	ex.printStackTrace();
//        }
//		
//		FileInputStream in;
//		ObjectInputStream objIn;
//		
//		try {
//			in = new FileInputStream("Cadastro.txt");
//			objIn = new ObjectInputStream(in);
//			
//			objIn.readObject();
//		} catch (FileNotFoundException e) {
//			e.printStackTrace();
//		} catch (IOException ex) {
//			ex.printStackTrace();
//		} catch (ClassNotFoundException ex) {
//			ex.printStackTrace();
//		}
		
	}
	
	public void criar(){
		ProfDE profDe1 = new ProfDE("Leo", 89, 15.2);
		ProfDE profDe2 = new ProfDE("Jao", 87, 10.5);
		
		ProfHorista proHorista1 = new ProfHorista("Maria", 2, 50, 21.0);
		ProfHorista proHorista2 = new ProfHorista("JozeFina", 4, 38, 9.8);
		
		//Gera excesão
//		Cadastro cadastro1 = new Cadastro(-10);
		
//		Cadastro cadastro2 = new Cadastro(100);
		
		cadastro2.insere(profDe1);
		cadastro2.insere(profDe2);
		cadastro2.insere(proHorista1);
		cadastro2.insere(proHorista2);
		
		/**
		 * Implementação de List que utiliza internamente um array de objetos. 
		 * Em uma inserção onde o tamanho do array interno não é suficiente, 
		 * um novo array é alocado (de tamanho igual a 1.5 vezes o array original), 
		 * e todo o conteúdo é copiado para o novo array. Em uma inserção no meio da lista (índice < tamanho),
		 * o conteúdo posterior ao índice é deslocado em uma posição. 
		 * Esta implementação é a recomendada quando o tamanho da lista é previsível (evitando realocações) 
		 * e as operações de inserção e remoção são feitas, em sua maioria, no fim da lista (evitando deslocamentos), 
		 * ou quando a lista é mais lida do que modificada (otimizado para leitura aleatória).
		 * */
		System.out.println("INSERE");
		try {
			if(cadastro2.insere(proHorista2, 2)){
				System.out.println("Inserido com sucesso!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			if(cadastro2.insere(profDe1, 200)){
				System.out.println("Inserido com sucesso!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		System.out.println("\n\nCONSULTA");
		System.out.println(cadastro2.consulta("Maria"));
		System.out.println(cadastro2.consulta("Leonardo"));

		System.out.println("\n\nPOSICAO");
		System.out.println(cadastro2.get(0));
		System.out.println(cadastro2.get(120));
		
		
		System.out.println("\n\nREMOVE");
		if(cadastro2.remove("Maria")){
			System.out.println("Removido com sucesso!");
		}
		if(cadastro2.remove("Carlos")){
			System.out.println("Removido com sucesso!");
		}
	}

	public Cadastro getCadastro2() {
		return cadastro2;
	}

	public void setCadastro2(Cadastro cadastro2) {
		this.cadastro2 = cadastro2;
	}
	

}
